今天要說的是信用卡分期付款,分期付款也是信用卡付款的一種,
但我們需要透過結構上的改動以符合分期資料的顯示,
由於分期主要是將一個訂單金額分成多次小金額進行付款(扣款),
所以我們主要在於新增欄位去紀錄相關資訊,
看一下結構,
Schema::create('payment', function (Blueprint $table) {
$table->string('id', 30)->comment('同訂單id');
$table->string('payment_id', 30)->comment('金流單id');
$table->string('type', 20)->comment('付款類型'); //credit, atm
$table->integer('period')->default(0)->comment('分期期數');
$table->string('status', 30)->default('unpaid')->comment('付款狀態');
$table->dateTime('expired_at')->nullable()->comment('付款截止時間');
$table->dateTime('paid_at')->nullable()->comment('付款時間');
$table->text('info')->nullable(); // 付款資訊物件(ATM帳號/超商代碼/超商條碼)
$table->float('amount')->default(0); // 金額
$table->float('first_period_price')->default(0); // 首期金額
$table->float('each_period_price')->default(0); // 每期金額
$table->float('fee')->default(0); // 手續費
$table->primary(['id']);
});
這次新增了幾個欄位來紀錄分期資訊,
period 分期期數
first_period_price 首期金額
each_period_price 剩餘每期金額
為什麼要有首期金額跟每期金額是因為,總金額不一定有辦法整除分期,
通常會在第一次把餘數加上去,所以這邊需要額外開一個欄位來做紀錄,
由於分期付款通常是由銀行端實做,如果第三方金流每次扣款都會通知的話,
還可以新增一個current_period當前期數欄位,讓使用者可以直接再網站上查看期數,
$table->integer('current_period')->default(1)->comment('當前期數');
至於type需不需要新增分期付款的選項,或者用type+period做判斷就看個人,
獨立的話在分析訂單的時候會比較方便一點,以上就是分期付款的內容拉,
講得很陽春,請大家見諒。
最後最後還有一件很重要的事情,
就是如果有談到退刷或者退款的時候,建議採用人工的方式,
並且開人工調整所需要的紀錄欄位(user_id之類的)來處理,
信用卡的東西牽扯到退款是非常麻煩的,流程非常複雜。